package com.shop.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;

/**
 * 售后单记录表 实体类。
 *
 * @author 彭新才 
 * @since 2024-10-14
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "售后单记录表")
@Table(value = "shop_order_refund")
public class ShopOrderRefund implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 售后单id
     */
    @Id(keyType = KeyType.Auto)
    @Schema(description = "售后单id")
    private Long id;

    /**
     * 订单id
     */
    @Schema(description = "订单id")
    private Long orderId;

    /**
     * 订单商品id
     */
    @Schema(description = "订单商品id")
    private Long productId;

    /**
     * 用户id
     */
    @Schema(description = "用户id")
    private Long userId;

    /**
     * 售后类型(10退货退款 20换货 30退款)
     */
    @Schema(description = "售后类型(10退货退款 20换货 30退款)")
    private Integer type;

    /**
     * 用户申请原因(说明)
     */
    @Schema(description = "用户申请原因(说明)")
    private String applyDesc;

    /**
     * 商家审核状态(0待审核 10已同意 20已拒绝)
     */
    @Schema(description = "商家审核状态(0待审核 10已同意 20已拒绝)")
    private Integer isAgree;

    /**
     * 商家拒绝原因(说明)
     */
    @Schema(description = "商家拒绝原因(说明)")
    private String refuseDesc;

    /**
     * 实际退款金额
     */
    @Schema(description = "实际退款金额")
    private BigDecimal refundMoney;

    /**
     * 用户是否发货(0未发货 1已发货)
     */
    @Schema(description = "用户是否发货(0未发货 1已发货)")
    private Integer isUserSend;

    /**
     * 用户发货时间
     */
    @Schema(description = "用户发货时间")
    private Timestamp sendTime;

    /**
     * 用户发货物流公司id
     */
    @Schema(description = "用户发货物流公司id")
    private String expressId;

    /**
     * 用户发货物流单号
     */
    @Schema(description = "用户发货物流单号")
    private String expressNo;

    /**
     * 商家收货状态(0未收货 1已收货)
     */
    @Schema(description = "商家收货状态(0未收货 1已收货)")
    private Integer isReceipt;

    /**
     * 售后单状态(0进行中 10已拒绝 20已完成 30已取消)
     */
    @Schema(description = "售后单状态(0进行中 10已拒绝 20已完成 30已取消)")
    private Integer status;

    /**
     * 平台是否发货(0未发货 1已发货)
     */
    @Schema(description = "平台是否发货(0未发货 1已发货)")
    private Integer isPlateSend;

    /**
     * 平台发货时间
     */
    @Schema(description = "平台发货时间")
    private Timestamp deliverTime;

    /**
     * 平台发货物流公司id
     */
    @Schema(description = "平台发货物流公司id")
    private String sendExpressId;

    /**
     * 平台发货物流单号
     */
    @Schema(description = "平台发货物流单号")
    private String sendExpressNo;

    /**
     * 供应商id
     */
    @Schema(description = "供应商id")
    private Integer shopSupplierId;

    /**
     * 10申请平台介入20同意30拒绝
     */
    @Schema(description = "10申请平台介入20同意30拒绝")
    private Integer plateStatus;

    /**
     * 平台备注
     */
    @Schema(description = "平台备注")
    private String plateDesc;

    /**
     * 退款号
     */
    @Schema(description = "退款号")
    private String outRefundNo;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Timestamp createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private Timestamp updateTime;

}
